type Arr = [1, 2, 3, 4, 5]

type ReverArr<T extends any[]> = T extends [infer First, ...infer rest] ? [...ReverArr<rest>, First] : T

type ArrInferRever = ReverArr<Arr> // [5, 4, 3, 2, 1]